package org.yzhzc.system.service.question;

import org.yzhzc.system.domain.question.dto.QuestionAddDTO;
import org.yzhzc.system.domain.question.dto.QuestionEditDTO;
import org.yzhzc.system.domain.question.dto.QuestionQueryDTO;
import org.yzhzc.system.domain.question.vo.QuestionDetailVO;
import org.yzhzc.system.domain.question.vo.QuestionVO;

import java.util.List;

/**
 * 题目管理服务接口（IQuestionService）
 * 题目管理的核心操作方法，如查询、添加、编辑和删除题目。
 */
public interface IQuestionService {

    /**
     * 获取题目列表
     * 根据查询条件获取题目列表，支持分页和筛选。
     *
     * @param questionQueryDTO 查询条件，包含题目的各种筛选参数
     * @return List<QuestionVO> 返回符合查询条件的题目列表
     */
    List<QuestionVO> list(QuestionQueryDTO questionQueryDTO);

    /**
     * 添加新题目
     * 将前端传递的题目信息进行保存。
     *
     * @param questionAddDTO 要添加的题目信息
     * @return boolean 返回操作是否成功，true表示成功，false表示失败
     */
    boolean add(QuestionAddDTO questionAddDTO);

    /**
     * 获取题目详情
     * 根据题目 ID 查询题目的详细信息。
     *
     * @param questionId 题目 ID
     * @return QuestionDetailVO 返回包含题目信息的详细对象
     */
    QuestionDetailVO detail(Long questionId);

    /**
     * 编辑题目
     * 更新指定的题目信息。
     *
     * @param questionEditDTO 要更新的题目信息
     * @return int 返回更新的行数，通常返回 1 表示成功，0 表示失败
     */
    int edit(QuestionEditDTO questionEditDTO);

    /**
     * 删除题目
     * 根据题目 ID 删除题目。
     *
     * @param questionId 题目 ID
     * @return int 返回删除的行数，通常返回 1 表示成功，0 表示失败
     */
    int delete(Long questionId);
}
